package com.weimob.mcloud.wechatwork.customer.service.user.exception;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 通用BaseErrorCode定义
 */
@AllArgsConstructor
public enum BaseErrorCode {
    /*****************
     ***Basic Error***
     ****************/
    SUCCESS(0L, "success"),
    ENTERPRISE_WECHAT_NOT_BOUND(1_0000_0000_0001L, "店铺未绑定企业微信"),
    ENTERPRISE_WECHAT_ADDRESS_APP_NOT_BOUND(1_0000_0000_0002L, "店铺未绑定企业微信通讯录应用"),
    ENTERPRISE_WECHAT_SELF_APP_NOT_BOUND(1_0000_0000_0003L, "店铺未绑定企业微信自建应用"),
    ENTERPRISE_WECHAT_ADDRESS_OR_SELF_APP_NOT_BOUND(1_0000_0000_0004L, "店铺未绑定企业微信通讯录或者自建应用"),

    FAILED(2_9000_0000_0001L, "System Error"),
    PARMA_EXCPETION(2_9000_0000_0002L, "Parameter Exception"),
    PARMA_LONG_EXCPETION(2_9000_0000_0003L, "Parameter size too long!"),
    TOKEN_INVALID(30_2000L, "登录过期"),
    USER_NOT_EXIST(30_0000L, "用户不存在"),
    MERCHANT_BLOCKED(2_0000_0000_0019L, "Merchant shop blocked"),
    NULL_MODEL(2_0000_0000_0003L, "query a null model"),
    PERMISSION_DENIED(2_0000_0000_0004L, "permission denied"),
    RPC_ERROR(2_0000_0000_0005L, "RPC异常"),
    PAGE_SIZE_LIMIT(2_0000_0000_0006L, "单次查询最多支持200个"),
    OPERATION_NOT_ALLOWED(2_0000_0000_0007L, "不支持的操作"),
    REPEATED_REQUEST_ERROR(2_0000_0000_0008L, "请勿重复请求"),
    SELECT_IN_MAX_SIZE_LIMIT_ERROR(2_0000_0000_0009L, "单次查询最多支持500个"),
    SYSTEM_ERROR(20_0000_0000_0010L, "系统异常，请稍后重试"),
    CORP_ID_NULL_ERROR(20_0000_0000_0011L,"获取corpId失败"),
    GROUP_PAGE_SIZE_LIMIT(2_0000_0000_0012L, "单次查询最多支持500个"),
    RETRY_NUM_OVERSIZE(2_0000_0000_0013L, "重试次数超过限制，请及时排查原因并处理"),
    PARAM_WID_NULL_EXCPETION(2_9000_0000_0014L, "wid不能为空"),
    PARAM_WID_SIZE_EXCPETION(2_9000_0000_0015L, "wid不能为超过10个"),
    SELECT_SIZE_OVER(2_9000_0000_0016L, "列表查询数量超过限制"),

    /**
     * 企微客户导出
     */
    USER_EXPORT_MAX_LIMIT(11_0000_0001L, "数据量太大，请调整筛选条件分批导出，单次最多导出100万条数据"),
    USER_EXPORT_SUBMIT_TIME(11_0000_0002L, "操作过于频繁，请稍后再试！"),

    /**
     * 应用权限相关
     */
    AUTHRIZE_GETLOGININFO_EXCEPTION(3_0000_0000_0001L, "调用中台接口获取用户登录信息失败"),
    AUTH_CODE_NULL_EXCEPTION(3_0000_0000_0002L, "授权code不能为空"),
    SIGNATURE_CREATE_EXCEPTION(3_0000_0000_0003L, "生成签名失败"),
    JSSDK_TICKET_NULL_EXCEPTION(3_0000_0000_0004L, "调用中台接口获取jaadk_ticket失败"),
    CROPID_NULL_EXCEPTION(3_0000_0000_0005L, "corpid不能为空"),
    AGENTID_NULL_EXCEPTION(3_0000_0000_0006L, "agentid不能为空"),
    SUITEID_NULL_EXCEPTION(3_0000_0000_0007L, "suiteid不能为空"),
    APP_TYPE_NULL_EXCEPTION(3_0000_0000_0008L, "应用类型不能为空"),
    JSSDK_TICKET_PARAM_NULL_EXCEPTION(3_0000_0000_0009L, "获取jssdk_ticket参数不能为空"),
    QUERY_JSSDK_TICKET_NULL_EXCEPTION(3_0000_0000_0010L, "获取jaadk_ticket失败"),
    TOKEN_EXPIRE(3_0000_0000_0011L, "您的登录信息已过期，请重新登录"),
    TOKEN_CREATE_EXCEPTION(3_0000_0000_0012L, "登录token生成失败"),
    QUERY_CROPID_EXCEPTION(3_0000_0000_0011L, "您的登录信息已过期，请重新登录"),
    QUERY_USERID_EXCEPTION(3_0000_0000_0011L, "您的登录信息已过期，请重新登录"),
    QUERY_AGENT_EXCEPTION(3_0000_0000_0011L, "您的登录信息已过期，请重新登录"),
    USER_LOGIN_NULL_EXCEPTION(3_0000_0000_0013L, "获取用户登录信息失败"),
    JSSDK_URL_NULL_EXCEPTION(3_0000_0000_0014L, "url不能为空"),
    WID_NULL_EXCEPTION(3_0000_0000_0015L, "获取wid失败"),
    PID_NULL_EXCEPTION(3_0000_0000_0016L, "获取pid失败"),
    PHONE_CHECK_ERROR(3_0000_0000_0017L, "验证码校验失败"),
    CORPINFO_NULL_EXCEPTION(3_0000_0000_0018L, "未绑定店铺，请先绑定店铺"),
    NOT_SUPPORT_TYPE_EXCEPTION(3_0000_0000_0019L, "暂不支持该应用类型"),
    APPID_NULL_EXCEPTION(3_0000_0000_0020L, "应用id不能为空"),
    BOSIDEBAR_LINK_NULL_EXCEPTION(3_0000_0000_0022L, "侧边栏链接未配置，请联系服务商运营处理"),
    CREDIBLE_DOMAIN_NAME_LINK_NULL_EXCEPTION(3_0000_0000_0023L, "可信域名信息未配置，请联系服务商运营处理"),
    SUITE_ID_BC_NULL_EXCEPTION(3_0000_0000_0024L, "该店铺暂未绑定第三方应用"),
    SUITE_ID_PACKAGE_NULL_EXCEPTION(3_0000_0000_0025L, "suiteId未配置，请联系服务商运营处理"),
    SUITE_ID_CONFIG_NO_MATCH_EXCEPTION(3_0000_0000_0026L, "配置第三方应用信息与店铺绑定的第三方应用信息不匹配"),
    PACKAGE_NULL_EXCEPTION(3_0000_0000_0027L, "获取套餐id失败"),
    PACKAGE_LINK_PARSING_FAILED_EXCEPTION(3_0000_0000_0028L, "侧边栏和可信域名配置信息解析失败"),
    THIRD_APP_NULL_EXCEPTION(3_0000_0000_0029L, "未发现第三方应用"),
    BC_BIND_APP_NULL_EXCEPTION(3_0000_0000_0030L, "此店铺暂未绑定任何应用，请先绑定应用"),
    BC_BIND_SELF_APP_NULL_EXCEPTION(3_0000_0000_0031L, "您未授权自建应用，此功能无法正常使用，请先进行自建应用授权"),
    BC_BIND_THIRD_APP_NULL_EXCEPTION(3_0000_0000_0032L, "您未授权第三方应用，此功能无法正常使用，请先进行第三方应用授权"),
    SUITEID_BC_CONFIG_DISACCORD_EXCEPTION(3_0000_0000_0033L, "应用未授权，请至【授权-第三方应用授权】页面处理"),
    GET_BOUND_PID_FAILED_EXCEPTION(3000000000034L, "获取绑定店铺的pid失败"),

    /**
     * 客户群相关
     */
    QUERY_GROUP_MEMBER_MAX_LIMIT(4_0000_0000_0001L, "超过一次批量查询数量，最大500条"),
    QUERY_GROUP_STATISTIC_ERROR(4_0000_0000_0002L, "获取群统计数据异常"),
    QUERY_GROUP_STATISTIC_BEGINDATE_ERROR(4_0000_0000_0003L, "开始时间必须是昨天或以前"),
    QUERY_GROUP_STATISTIC_DATE_ERROR(4_0000_0000_0004L, "开始时间不能大于结束时间"),
    GROUP_EXPORT_DATA_EMPTY(4_0000_0000_0005L, "客户群导出数据为空"),
    GROUP_STATISTIC_OWNER_EMPTY(4_0000_0000_0006L, "请选择需要查询的群主"),
    ACQUIRE_RETAIL_PID_ERROR(4_0000_0000_0007L, "获取零售Pid失败"),
    GROUP_STORE_IDEMPOTENT_ERROR(4_0000_0000_0008L, "客户群与零售门店关系修改中，请勿同时操作"),
    CHECK_DISSOLVE_GROUP_ERROR(4_0000_0000_0009L, "请选择未解散的群聊"),
    FETCH_CORP_ID_ERROR(4_0000_0000_0010L, "通过BosId获取CorpId失败"),
    GROUP_PAGE_INFO_ERROR(4_0000_0000_0011L, "分页信息不能为空"),
    NO_ROLE_INFO_ERROR(4_0000_0000_0012L, "未查到员工角色信息"),
    WID_IS_NULL_ERROR(4_0000_0000_0013L, "员工wid为空"),
    PARA_ERROR(4_0000_0000_0014L, "参数异常"),

    EXTERNAL_USER_EXPORT_DATA_EMPTY(5_0000_0000_0001L, "外部联系人导出数据为空"),
    EXTERNAL_USER_RELATION_TAG_ERROR(5_0000_0000_0002L, "外部联系人关联cdp标签异常"),
    EXTERNAL_USER_DISMISS_RELATION_TAG_ERROR(5_0000_0000_0003L, "外部联系人解绑cdp标签异常"),

    CDP_MARK_MESSAGE_EMPTY(6_0000_0000_0001L, "cdp打点参数为空"),
    CDP_MARK_MESSAGE_PID_NOT_EXIST(6_0000_0000_0002L, "打点行为参数必须存在pid"),
    CDP_MARK_MESSAGE_WID_NOT_EXIST(6_0000_0000_0002L, "打点参数Wid不存在"),

    /**
     * 统计相关
     */
    QUERY_USER_BEHAVIOR_STATISTIC_ERROR(7_0000_0000_0001L, "获取客户统计数据异常"),

    /**
     * 欢迎语相关
     */
    MESSAGE_DELETE(8_0000_0000_0001L,"该欢迎语已删除"),
    NAME_REPEAT(8_0000_0000_0003L,"素材名称不能重复"),

    /**
     * 组织架构相关
     * */
    QUERUY_ORG_DEPT_ERROR(9_0000_0000_0001L,"获取部门信息失败，请稍后再试"),
    QUERUY_ORG_USER_ERROR(9_0000_0000_0002L,"获取员工信息失败，请稍后再试"),
    DEPT_NULL_ERROR(9_0000_0000_0003L,"部门信息不存在"),
    ORG_CHANGE_ADD_DEPT_ERROR(9_0000_0000_0004L,"组织架构信息变更——增加部门失败"),
    ORG_CHANGE_UPDATE_DEPT_ERROR(9_0000_0000_0005L,"组织架构信息变更——修改部门信息失败"),
    ORG_CHANGE_DELETE_DEPT_ERROR(9_0000_0000_0006L,"组织架构信息变更——删除部门失败"),
    ORG_CHANGE_ADD_USER_ERROR(9_0000_0000_0007L,"组织架构信息变更——增加员工失败"),
    ORG_CHANGE_UPDATE_USER_ERROR(9_0000_0000_0008L,"组织架构信息变更——修改员工信息失败"),
    ORG_CHANGE_DELETE_USER_ERROR(9_0000_0000_0009L,"组织架构信息变更——删除员工信息失败"),

    /**
     * 企微相关
     */
    ENTERPRISE_WECHAT_MESSAGE_DELETE(4_0037L,"无法同步，请删除后重新新建群欢迎语"),
    ENTERPRISE_WECHAT_MESSAGE_LIMIT(4_1055L,"企业微信后台素材库数量最多支持100条"),
    ENTERPRISE_WECHAT_MINIPROGRAM_APPID_ERROR(1003_0060_0231L,"小程序appid填写不正确"),

    /**
     * 添加客户相关
     */
    EXCEL_ERROR(1003_0060_0231L,"解析excel出错"),
    EXCEL_EMPTY(1003_0060_0232L,"请按照模板格式上传"),
    EXCEL_TOO_BIG(1003_0060_0233L,"单次最多可上传2000条，请删除超出部分再导入"),
    NO_ORG_USER_ID(1003_0060_0234L,"分配的部门或员工不存在"),
    NOT_ENOUGH_ORG_USER(1003_0060_0235L,"选择员工数不能大于客户数"),
    CUSTOMER_NOT_EXIST(1003_0060_0236L,"该客户不存在或已删除"),
    CUSTOMER_IDEMPOTENT_ERROR(1003_0060_0237L,"客户信息导入中，请勿同时上传"),
    INCORRECT_FORMAT(1003_0060_0238L,"格式不正确"),
    NO_CUSTOMER(1003_0060_0238L,"无导入成功的客户，请检查后重新上传"),
    ADD_TAG_LIMIT(1003_0060_0239L, "每次最多新增%s个标签，请重新选择"),
    REMOVE_TAG_LIMIT(1003_0060_0240L, "每次最多移除%s个标签，请重新选择"),
    WID_IS_NOTEXIST(1003_0060_0241L, "无法获取用户信息"),
    FILENAME_TOO_LARGE(1003_0060_0242L,"导入模板名称过长"),

    /**
     * 群活码相关
     */
    GROUP_CODE_NOT_EXIST(1003_0060_0243L, "该群活码不存在或已删除"),

    /**
     * 企业圈相关
     */
    EXISTS_ERROR(10_0001L, "已存在引导页浏览记录,无需重复添加"),
    CLASSIFY_NOT_EXISTS(10_0002L, "当前分类不存在"),
    USER_NOT_EXISTS(10_0003L, "当前成员信息不存在"),
    USER_IS_DELETED(10_0004L, "当前成员%s已删除"),
    USER_IS_RESIGN(10_0005L, "当前成员%s已离职"),
    USER_INCOMPATIBLE(10_0006L, "不存在符合条件成员"),
    USER_OR_DEPARTMENT_NOT_EXISTS(10_0007L, "成员ID和部门ID不能同时为空"),
    IMAGE_CONTENT_NOT_NULL(10_0008L, "图文对象不能为空"),
    IMAGE_CONTENT_PROPERTY_NOT_NULL(10_0009L, "图文对象%s属性不能为空"),
    LINK_CONTENT_NOT_NULL(10_0010L, "链接对象不能为空"),
    LINK_CONTENT_PROPERTY_NOT_NULL(10_0011L, "链接对象%s属性不能为空"),
    VIDEO_CONTENT_NOT_NULL(10_0012L, "视频对象不能为空"),
    VIDEO_CONTENT_PROPERTY_NOT_NULL(10_0013L, "视频对象%s属性不能为空"),
    QUERY_AGENT_ID_NOT_NULL(10_0014L, "您未授权自建应用，此功能无法正常使用，请先进行自建应用授权"),
    USER_DIS_ABLE_RESIGN(10_0015L, "当前成员%s已禁用"),
    IMAGE_CONTENT_NOT_TOGETHER_NULL(10_0016L, "图文对象图片文字不能同时为空"),
    ORG_USER_OR_DEPARTMENT_ID_NOT_TOGETHER_NULL(10_0017L, "部门id和成员id不能同时为空"),
    VIDEO_OR_CONTENT_NOT_TOGETHER_NULL(10_0018L, "视频文件和文本内容不能同时为空"),

    externaluserErrCode(1003_0060_0001L,"token失效"),


    TAG_CHANNEL_NOT_EXISTS(20_1000_0000_0001L, "不存在的标签渠道"),

    THIRD_MC_EXCEPTION(20100000000002L, "调用第三方mc接口异常"),

    CDP_USER_TAG_ACTION_TYPE_ERROR(20_1000_0000_0003L, "cdp用户打标行为类型异常"),

    CDP_UID_UNKNOWN_ERROR(20_1000_0000_0004L, "cdp用户uid反查外部联系人externalUserId失败"),

    UC_GET_WID_FAILED(20_1000_0000_0005L, "使用外部联系人id调用uc换取wid失败"),

    CDP_GET_UID_FAILED(20_1000_0000_0006L, "cdp通过企微外部联系人externalUserId换取uid失败"),
    /**
     * ==========================================================
     * ！！特殊-华佗错误类型
     * 外部联系人access token错误
     */
    EXTERNAL_USER_ACCESS_TOKEN_ERROR(30_0000_0000_0001L, "该异常因为外部联系人配置不正确引起"),

    /**
     * 获取authorizerAccessToken失败
     */
    FAILED_TO_GET_AUTHORIZER_ACCESS_TOKEN(30_0000_0000_0002L, "该异常因为外部联系人配置不正确引起"),

    /**
     * 没有外部联系人权限
     */
    NO_AUTHORITY_OF_EXTERNAL_USER(30_0000_0000_0003L, "该异常因为外部联系人配置不正确引起"),

    /**
     * 所选员工状态异常
     */
    SELECTED_EMPLOYEE_STATUS_ERROR(30_0000_0000_0004L, "所选员工状态异常"),

    /**
     * 所选部门异常
     */
    SELECTED_DEPT_ERROR(30_0000_0000_0005L, "所选部门异常"),

    /**
     * 未设置自建应用
     */
    OWN_APP_NOT_CONFIGURED(30_0000_0000_0006L, "配置自建应用后才能使用，请检查自建应用配置状态"),

    /**
     * 未设置第三方应用
     */
    THIRD_PARTY_APP_NOT_CONFIGURED(30_0000_0000_0007L, "配置第三方应用后才能使用，请检查第三方应用配置状态"),

    /**
     * 未设置自建应用和第三方应用
     */
    OWN_AND_THIRD_PARTY_APP_NOT_CONFIGURED(30_0000_0000_0008L, "配置自建应用和第三方应用后才能使用，请检查配置状态"),

    /**
     * 消息提醒已被删除
     */
    WECHAT_NOTICE_DELETED(30_0000_0000_0009L,"该提醒已删除"),

    /**
     * 对外相关 ：第三方开发者+开放平台
     * */
    OPEN_TOKEN_EXPIRED(100_10004_11111_10010L,"token已过期"),
    REQUEST_REPEAT(100_10004_11111_10020L,"请勿重复请求"),
    QUERY_AGENTID_EXCEPTION(100_10004_11111_10023L,"获取agentId失败"),

    /**
     * 对外入口相关
     * */
    EXTERNALUSER_PHONE_WEVHAT_QQ_ALL_NULL(100_10003_11111_10012L,"外部联系人手机号、微信号、QQ号请至少填写一个"),
    EXTERNALUSER_NULL(100_10003_11111_10022L,"外部联系人不存在"),
    USER_NULL(100_10004_11111_10012L,"员工不存在"),
    EXTERNALUSER_BELONG_USER_NULL(100_10004_11111_10012L,"未查询到外部联系人所属员工信息"),
    USER_MOBILE_REPEAT(100_10004_11111_10013L,"该员工手机号已存在"),

    /**
     * 导购相关信息
     */
    GUIDER_RPC_EXCEPTION(30_0000_1000_0001L,"获取导购信息异常"),

    /**
     * 账号相关
     */
    SELECT_MOBILE_RPC_EXCEPTION(30_0000_2000_0001L,"获取手机号失败"),

    /**
     * 外部联系人相关信息
     */
    SELECT_ACCOUNT_QUERY_RPC_EXCEPTION(30_0000_3000_0001L,"查询外部联系人账户资产信息失败"),
    SELECT_CONSUME_QUERY_RPC_EXCEPTION(30_0000_3000_0002L,"查询外部联系人账户资产信息失败"),
    SELECT_uid_QUERY_RPC_EXCEPTION(30_0000_3000_0003L,"查询外部联系人uid失败"),
    SELECT_MEMBER_QUERY_RPC_EXCEPTION(30_0000_3000_0004L,"查询外部联系人会员卡信息失败"),

    /**
     * 标签相关
     */
    SELECT_TAG_BY_ATTR_ID_QUERY_RPC_EXCEPTION(30_0000_4000_0001L,"查询标签失败"),

    /**
     * 侧边栏相关信息
     */
    SIDEBAR_UNAUTH_SUITE_EXCEPTION(30_0000_5000_0002L,"请联系管理员授权自建应用"),
    SIDEBAR_NONE_CHANNEL_EXCEPTION(30_0000_5000_0003L,"请联系管理员进行渠道关联"),
    SIDEBAR_NONE_MALL_ACC_EXCEPTION(30_0000_5000_0004L,"请联系管理员在对应店铺创建子账号"),
    SIDEBAR_NOT_OPEN_MALL_AUTH_EXCEPTION(30_0000_5000_0005L,"请联系管理员给该账号在微商城店铺配置对应菜单"),
    SIDEBAR_NOT_GUIDE_EXCEPTION(30_0000_5000_0006L,"请联系管理员在对应店铺创建导购"),
    SIDEBAR_NOT_OPEN_GUIDE_EXCEPTION(30_0000_5000_0007L,"请联系管理员启用导购"),

    /**
     * 门店相关
     */
    SELECT_STORE_ERROR_EXCEPTION(30_0000_6000_0001L,"查询门店失败"),

    /**
     * 标签建群相关
     */
    EMPLOYEE_IS_EMPTY(30_0000_7000_0001L,"未选择员工"),

    /**
     * 侧边栏相关
     */
    CURRENTVID_IS_EMPTY(30_0000_8000_0001L,"当前所选VID为空"),

    /**
     * 侧边栏流程阶段设置
     */
    PROCESS_STAGE_OPERATION_CONFLICT(30_0000_8000_0002L,"多人同时操作造成数据冲突，请刷新！"),

    /**
     * 限流错误码
     */
    BLOCK_HANDLER_CODE(30_0000_8000_0003L, "接口调用频次超限，请稍后重试~"),
    ;

    @Getter
    private Long code;

    @Getter
    private String msg;

    public static BaseErrorCode getByCode(Long code) {
        if (code == null) {
            return null;
        }
        for (BaseErrorCode statusEnum : BaseErrorCode.values()) {
            if (statusEnum.getCode().equals(code)) {
                return statusEnum;
            }
        }
        return null;
    }
}
